Fixes a bug that prevented headers from being set in an ajaxSend callback. Unit test...
authorjaubourg <j@ubourg.net>
Mon, 7 Feb 2011 15:35:32 +0000 (16:35 +0100)
committerjaubourg <j@ubourg.net>
Mon, 7 Feb 2011 15:35:32 +0000 (16:35 +0100)
src/ajax.js
test/unit/ajax.js

index 4830e3d..2b6b80f 100644 (file)
@@ -684,8 +684,7 @@ jQuery.extend({
                if ( !transport ) {
                        done( -1, "No Transport" );
                } else {
-                       // Set state as sending
-                       state = jqXHR.readyState = 1;
+                       jqXHR.readyState = 1;
                        // Send global event
                        if ( fireGlobals ) {
                                globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
@@ -698,6 +697,7 @@ jQuery.extend({
                        }
 
                        try {
+                               state = 1;
                                transport.send( requestHeaders, done );
                        } catch (e) {
                                // Propagate exception as error if not done
index cf7c0ad..59159c3 100644 (file)
@@ -348,10 +348,14 @@ test(".ajax() - headers" , function() {
 
        stop();
 
+       jQuery('#foo').ajaxSend(function( evt, xhr ) {
+               xhr.setRequestHeader( "ajax-send", "test" );
+       });
+
        var requestHeaders = {
-               siMPle: "value",
-               "SometHing-elsE": "other value",
-               OthEr: "something else"
+                       siMPle: "value",
+                       "SometHing-elsE": "other value",
+                       OthEr: "something else"
                },
                list = [],
                i;
@@ -359,22 +363,25 @@ test(".ajax() - headers" , function() {
        for( i in requestHeaders ) {
                list.push( i );
        }
+       list.push( "ajax-send" );
 
        jQuery.ajax(url("data/headers.php?keys="+list.join( "_" ) ), {
+
                headers: requestHeaders,
                success: function( data , _ , xhr ) {
                        var tmp = [];
                        for ( i in requestHeaders ) {
                                tmp.push( i , ": " , requestHeaders[ i ] , "\n" );
                        }
+                       tmp.push(  "ajax-send: test\n" );
                        tmp = tmp.join( "" );
 
                        equals( data , tmp , "Headers were sent" );
                        equals( xhr.getResponseHeader( "Sample-Header" ) , "Hello World" , "Sample header received" );
-                       start();
                },
                error: function(){ ok(false, "error"); }
-       });
+
+       }).then( start, start );
 
 });